//package com.yami.shop.service.impl;
//
//import com.fasterxml.jackson.databind.JsonNode;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Service;
//import org.springframework.web.client.RestTemplate;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//
//import java.util.concurrent.TimeUnit;
//
//@Service
//public class WeChatService {
//
//    @Value("${wechat.app-id}")
//    private String appId;
//
//    @Value("${wechat.app-secret}")
//    private String appSecret;
//
//    @Value("${wechat.access-token-url}")
//    private String accessTokenUrl;
//
//
//    @Value("${wechat.template-message-url}")
//    private String templateMessageUrl;
//
//    @Autowired
//    private RestTemplate restTemplate;
//
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//    /**
//     * 获取 Access Token
//     */
//    public String getAccessToken() {
//        // 从 Redis 中获取 Access Token
//        String accessToken = redisTemplate.opsForValue().get("wechat_access_token");
//        if (accessToken != null) {
//            return accessToken;
//        }
//
//        // 调用微信 API 获取 Access Token
//        String url = accessTokenUrl.replace("{appId}", appId).replace("{appSecret}", appSecret);
//        String response = restTemplate.getForObject(url, String.class);
//
//        // 解析响应
//        accessToken = parseAccessToken(response);
//
//        // 将 Access Token 存储到 Redis，设置过期时间为 2 小时
//        redisTemplate.opsForValue().set("wechat_access_token", accessToken, 2, TimeUnit.HOURS);
//
//        return accessToken;
//    }
//
//    /**
//     * 解析 Access Token
//     */
//    private String parseAccessToken(String response) {
//        try {
//            ObjectMapper objectMapper = new ObjectMapper();
//            JsonNode jsonNode = objectMapper.readTree(response);
//            return jsonNode.get("access_token").asText();
//        } catch (Exception e) {
//            throw new RuntimeException("解析 Access Token 失败", e);
//        }
//    }
//
////      try {
////        // 获取 Access Token
////        String accessToken = weChatService.getAccessToken();
////
////        // 发送模板消息
////        weChatService.sendTemplateMessage(accessToken, openId, templateId, data);
////        return "模板消息发送成功";
////    } catch (Exception e) {
////        return "模板消息发送失败: " + e.getMessage();
////    }
//
//
//    /**
//     * 发送模板消息
//     */
//    public void sendTemplateMessage(String accessToken, String openId, String templateId, String data) {
//        String url = templateMessageUrl.replace("{accessToken}", accessToken);
//
//        // 构造请求体
//        String jsonBody = String.format("{" +
//                "\"touser\":\"%s\"," +
//                "\"template_id\":\"%s\"," +
//                "\"data\":%s" +
//                "}", openId, templateId, data);
//
//        // 设置请求头
//        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_JSON);
//
//        // 发送 POST 请求
//        HttpEntity<String> request = new HttpEntity<>(jsonBody, headers);
//        String response = restTemplate.postForObject(url, request, String.class);
//
//        // 打印响应
//        System.out.println(response);
//    }
//}